package work.sajor.wechatpush.util;


import java.util.*;// 引用路径
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * @ClassName JiNianRi
 * @Description TODO
 * @Author ydzhao
 * @Date 2022/8/2 17:32
 */
public class JiNianRi {
    private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");

    /**
     * 距离date还有多少天
     * @param date
     * @return
     */
    public static int before(String date) {
        int day = 0;
        try {
            long time = System.currentTimeMillis() - simpleDateFormat.parse(date).getTime();
//            day = (int) (time / 86400000L);
//            day = (int) (time / 86400000L);
            day = (int) (time / 31536000000L);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return day;
    }

    /**
     * 距离今天还有多少天过生日
     * @param paramBirthday
     * @return
     */
    public static int calBirthday(Date paramBirthday,String date) {
        Calendar c = new GregorianCalendar();
        // 根据生日获取月份 注意 java 中月份比实际月份小1 11月份获取值为10
        System.out.println(paramBirthday);
        int month = paramBirthday.getMonth();
        // 根据生日获取日期
//		int day = paramBirthday.getDay();
        System.out.println(date);
        // 获取当前年份
        int year = c.get(Calendar.YEAR);
        // 创建当前年份的日期对象 假设生日是1996-11-12 此处创建 2019-11-12
        Calendar birthday = new GregorianCalendar();
        birthday.set(year, month, Integer.valueOf(date));
        // 获取生日是当前年份的第几天
        int last = birthday.get(Calendar.DAY_OF_YEAR);
        System.out.println(last);
        // 获取当前日期是当前年份的第几天
        int first = c.get(Calendar.DAY_OF_YEAR);
        System.out.println(first);
        // 获取当前年份的总天数
        int days = c.getActualMaximum(Calendar.DAY_OF_YEAR);
        System.out.println(days);
        if (birthday.after(c)) {
            // 如果生日在当前日期后，说明还没过生日，时间差就是 last-first
            int m = last - first;
            return m;
//			System.out.println("距离过生日还有" + m + "天");
        } else {
            // 否则就是今年已经过了生日，计算下一年的生日 天数计算就是 今年总天数 days - 当前日期所在第几天 first + 明年生日所在明年的第几天
            Calendar nextbirthday = new GregorianCalendar();
            nextbirthday.set(year + 1, month, Integer.valueOf(date));
            System.out.println(nextbirthday.get(Calendar.DAY_OF_YEAR));
            int sday =365 - ( first - last  );
            return sday;
//			System.out.println("距离下一个生日还有" + sday + "天");
        }
    }


    /**
     * 已经过去date多少天
     * @param date
     * @return
     */
    public static int after(String date) {
        int day = 0;
        try {
            long time = System.currentTimeMillis() - simpleDateFormat.parse(date).getTime();
            day = (int) (time / 86400000L);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return day;
    }

    public static int getJieHun(String jieHun) {
        return before(jieHun);
    }

    public static int getLinZhen(String linZheng) {
        return before(linZheng);
    }

    public static int getLianAi(String lianAi) {
        return after(lianAi);
    }

    public static int getShengRi(String shengRi){
        try {
            return calBirthday(simpleDateFormat.parse(shengRi),shengRi.substring(shengRi.lastIndexOf('-') + 1));
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return 0;
    }

    public static void main(String[] args) {
//        System.out.println(getJieHun());
    }


}
